package com.demandbreakdown.xiyun.utils;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 密码加密工具
 * 用于生成加密后的密码，方便直接存入数据库
 * <p>
 * 使用方法：
 * 1. 修改下面的 PLAIN_PASSWORD 为你的明文密码
 * 2. 运行 main 方法
 * 3. 复制控制台输出的加密密码
 * 4. 将加密密码存入数据库
 */
public class PasswordEncryptor {

    // ========================================
    // 👇 在这里设置你要加密的明文密码 👇
    // ========================================
    private static final String PLAIN_PASSWORD = "123456";  // 修改这里！
    // ========================================

    public static void main(String[] args) {
        // 使用项目中的 BCryptPasswordEncoder 加密方式
        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

        // 加密密码
        String encryptedPassword = passwordEncoder.encode(PLAIN_PASSWORD);

        // 输出结果
        System.out.println();
        System.out.println("=".repeat(80));
        System.out.println("密码加密工具");
        System.out.println("=".repeat(80));
        System.out.println();
        System.out.println("明文密码: " + PLAIN_PASSWORD);
        System.out.println();
        System.out.println("加密密码: " + encryptedPassword);
        System.out.println();
        System.out.println("=".repeat(80));
        System.out.println("💡 提示：直接复制上面的加密密码，存入数据库的 user_password 字段");
        System.out.println("=".repeat(80));
        System.out.println();

        // 验证加密是否正确
        boolean matches = passwordEncoder.matches(PLAIN_PASSWORD, encryptedPassword);
        System.out.println("✅ 加密验证: " + (matches ? "成功" : "失败"));
        System.out.println();
    }

    /**
     * 批量加密多个密码
     * 如果需要加密多个密码，可以取消下面方法的注释并运行
     */
    /*
    public static void main(String[] args) {
        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

        // 要加密的密码列表
        String[] passwords = {
            "Admin123",
            "User1234",
            "Test1234"
        };

        System.out.println("\n" + "=".repeat(80));
        System.out.println("批量密码加密");
        System.out.println("=".repeat(80) + "\n");

        for (int i = 0; i < passwords.length; i++) {
            String encrypted = passwordEncoder.encode(passwords[i]);
            System.out.printf("%d. 明文: %-20s 加密: %s%n", i + 1, passwords[i], encrypted);
        }

        System.out.println("\n" + "=".repeat(80) + "\n");
    }
    */
}

